// UserDao.java
package com.hwpt.hwaccount.core.data.local.dao;

import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;

import com.hwpt.hwaccount.core.data.local.entity.UserEntity;

import java.util.List;

import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.core.Flowable;
import io.reactivex.rxjava3.core.Single;

/**
 * 描述：用户数据访问对象接口，定义用户相关数据库操作
 * 作者：Mr.高
 * 日期：2025/8/20
 */
@Dao
public interface UserDao {
    /**
     * 插入或替换用户数据
     * <p>当发生主键冲突时，自动替换旧数据</p>
     *
     * @param user 待插入的用户实体对象
     * @return Completable 用于观察操作完成事件（无返回值）
     */
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    Completable insertUser(UserEntity user);

    /**
     * 查询所有用户信息（全字段）
     * @return Single<List<UserEntity>> 可观察的查询结果（用户列表）
     */
    @Query("SELECT * FROM Users")
    Single<List<UserEntity>> getAllUsers();


    /**
     * 删除所有用户记录
     */
    @Query("DELETE FROM Users") // 假设表名为 users
    void deleteAllUsers();


    // 专门更新头像的方法
    @Query("UPDATE users SET avatarUrl = :avatarUrl WHERE hanWangId = :accountId")
    Completable updateAvatar(String accountId, String avatarUrl);

    @Query("SELECT * FROM Users")
    Flowable<List<UserEntity>> observeAllUsers();


}